#ifndef STORAGE_REQUIREMENTS_STORAGE_HPP
#define STORAGE_REQUIREMENTS_STORAGE_HPP

#include "Storage/StorageBase.hpp"

namespace Model { class Project; }

namespace Storage
{

/// @ingroup Storage
/// @brief It specializes the generic storage to deal with requirements.
class STORAGE_API RequirementsStorage: public StorageBase
{
public:
	/// @brief It initializes the storage.
	/// @param factory the storage factory providing access to other storages this one might depend on.
	explicit RequirementsStorage( StorageFactory& factory);

	/// @brief It loads the requirements related to the given project and assigns them to the associated parent 
	///		packages.
	virtual void loadRequirements( Model::Project& prjToLoad) = 0;

};


} // namespace Storage

#endif // STORAGE_REQUIREMENTS_STORAGE_HPP